package com.tengju.user.domain.model.archive.letax;


import com.tengju.user.domain.model.archive.IdCardNo;
import com.tengju.user.domain.model.user.UserIdCode;
import com.tengju.user.domain.shared.AccountId;

import java.util.List;

public interface LetaxRepository {

    LetaxAccount find(UserIdCode idCode, AccountId accountId);

    LetaxAccount find(UserIdCode idCode, LetaxStatus notStatus);

    LetaxAccount findOne(UserIdCode idCode, AccountId accountId, LetaxStatus notStatus);

    LetaxAccount findOneByStatus(UserIdCode idCode, AccountId accountId, LetaxStatus status);

    int count(UserIdCode idCode, IdCardNo idCardNo, LetaxStatus notStatus);

    /**
     * 判断代理是否有注册，有就返回信息，没有就返回空数组
     * @param idCode
     * @param accountId
     * @param notInStatus
     * @return
     */
    LetaxAccount findOneNotIn(UserIdCode idCode, AccountId accountId, List<LetaxStatus> notInStatus);

    int update(LetaxAccountId letaxAccountId, LetaxAccount letaxAccount);

    int count(IdCardNo idCardNo, LetaxStatus notStatus);

    long save(LetaxAccount letaxAccount);

    LetaxAccount findByIdCardNoAndNotStatus(IdCardNo idCardNo, LetaxStatus notStatus);

}
